1. Field of the Invention
The present invention relates to the field of data entry and retrieval and, more particularly, to a method and system for anchoring annotations to data elements, such that the annotations may be retrieved and viewed from any type of application capable of instantiating the data element, regardless of the application from which the annotation was created.
2. Description of the Related Art
There are well known methods for capturing and storing explicit knowledge as data, for example, in relational databases, documents, flat files, and various proprietary formats in binary files. Often, such data is analyzed by various parties (e.g., experts, technicians, managers, etc.), resulting in rich interpretive information, commonly referred to as tacit knowledge. However, such tacit knowledge is often only temporarily captured, for example, as cryptic notes in a lab notebook, discussions/conversations, presentations, instant messaging exchanges, e-mails and the like. Because this tacit knowledge is typically not captured in the application environment in which the related data is viewed and analyzed, it is often lost.
One approach to more permanently capture tacit knowledge is to create annotations containing descriptive information about data objects. Practically any identifiable type of object may be annotated, such as a matrix of data (e.g., a spreadsheet or database table), a text document, or an image. Further, subportions of objects (sub-objects) may be annotated, such as a cell, row, or column in a database table or a section, paragraph, or word in a text document. An indexing scheme is typically used to map each annotation to the annotated data object or sub-object, based on identifying information, typically in the form of an index. The index should provide enough specificity to allow the indexing scheme to locate the annotated data object (or sub-object). Further, to be effective, the indexing scheme should work both ways: given an index, the indexing scheme must be able to locate the annotated data object and, given an object, the indexing scheme must be able to calculate the index for use in classification, comparison, and searching (e.g., to search for annotations for a given data object).
Typically, the index refers to a particular data source in which an annotated data element is instantiated (e.g., a document, spreadsheet, database table, or the like). Thus, using the index, the annotation can be retrieved from the application used to display the data source containing the annotated data element. However, some data elements may be displayed (or otherwise instantiated) in a variety of different type (i.e., heterogeneous) application programs, which is a fairly common scenario in modern business enterprises. For example, in a biomedical enterprise, a single data element, such as a gene name, may occur in text documents (manipulated by a word processor/text editor), experimental data (manipulated by a database or spreadsheet application), genomic data (manipulated by a specialized application), images (manipulated by an image viewing application), and the like. In many cases, an annotation made for the data element may be valid regardless of the application in which it is instantiated. In such cases, it would be desirable to allow the annotation to be “anchored” to the data element, such that the annotation could be retrieved and viewed from any application in which it is being viewed.
Accordingly, there is a need for methods and systems for creating “global annotations” anchored to the data elements they describe, such that the global annotations may be retrieved and viewed from any application displaying the data elements.